﻿// WebZHX.Infrastructure/Data/Configurations/MaterInfoConfiguration.cs
using Core.Entities.Mater;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;

namespace Infrastructure.Data.Configurations.Mater
{
    /// <summary>
    /// 物料信息配置
    /// </summary>
    public class MaterInfoConfiguration : IEntityTypeConfiguration<Mater_Info>
    {
        public void Configure(EntityTypeBuilder<Mater_Info> builder)
        {
            // 表名
            builder.ToTable("BS_MaterInfo");

            // 主键
            builder.HasKey(m => m.Id);

            // 属性配置
            builder.Property(m => m.Id)
                .HasColumnName("ID")
                .HasMaxLength(36);

            builder.Property(m => m.MaterCode)
                .HasColumnName("MaterCode")
                .HasMaxLength(50);

            builder.Property(m => m.MaterName)
                .HasColumnName("MaterName")
                .HasMaxLength(100);
            builder.Property(m => m.MaterTepyID)
                .HasColumnName("MaterTepyID");
            builder.Property(m => m.materTepyName)
                .HasColumnName("materTepyName");
            builder.Property(m => m.MaterSpec)
                .HasColumnName("MaterSpec");
            
            builder.Property(m => m.Unit)
                .HasColumnName("Unit").IsRequired(false);
            builder.Property(m => m.StandardCost)
                .HasColumnName("StandardCost");
            
            builder.Property(m => m.ReorderPoint)
                .HasColumnName("ReorderPoint");
            builder.Property(m => m.SupplierID)
                .HasColumnName("SupplierID");

            builder.Property(m => m.SupplierName)
                .HasColumnName("SupplierName");
            
            builder.Property(m => m.Status)
                .HasColumnName("Status");
            builder.Property(m => m.CreatedBy)
                .HasColumnName("CreatedBy");
            builder.Property(m => m.CreateTime)
                .HasColumnName("CreateTime");
            builder.Property(m => m.UpdateBy)
                .HasColumnName("UpdateBy");
            builder.Property(m => m.UpdateTime)
                .HasColumnName("UpdateTime");

            // 索引
            builder.HasIndex(m => m.MaterCode);
            builder.HasIndex(m => m.MaterName);

            //// 默认值
            //builder.Property(m => m.CreatedTime)
            //    .HasDefaultValueSql("GETDATE()");

            //builder.Property(m => m.IsDeleted)
            //    .HasDefaultValue(false);
        }
    }
}